/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.impl;

import ar.edu.utn.frsf.cidisi.upcolbpip.UpcolbpipPackage;

import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.AgreementAtribute;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2BCollaboration;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2BRelationship;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2bcollaborationsFactory;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2bcollaborationsPackage;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.BusinessDocument;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.BusinessDocumentType;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.BusinessGoal;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.CollaborativeAgreement;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.PartnerRole;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.PublicBusinessInterface;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.QualitativeGoal;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.QuantitativeGoal;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.SpeechAct;
import ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.TradingPartner;

import ar.edu.utn.frsf.cidisi.upcolbpip.businessinterfaces.BusinessinterfacesPackage;

import ar.edu.utn.frsf.cidisi.upcolbpip.businessinterfaces.impl.BusinessinterfacesPackageImpl;

import ar.edu.utn.frsf.cidisi.upcolbpip.collaborativebusinessprocesses.CollaborativebusinessprocessesPackage;

import ar.edu.utn.frsf.cidisi.upcolbpip.collaborativebusinessprocesses.impl.CollaborativebusinessprocessesPackageImpl;

import ar.edu.utn.frsf.cidisi.upcolbpip.impl.UpcolbpipPackageImpl;

import ar.edu.utn.frsf.cidisi.upcolbpip.interactionprotocols.InteractionprotocolsPackage;

import ar.edu.utn.frsf.cidisi.upcolbpip.interactionprotocols.impl.InteractionprotocolsPackageImpl;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class B2bcollaborationsPackageImpl extends EPackageImpl implements B2bcollaborationsPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass b2BCollaborationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass collaborativeAgreementEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass businessGoalEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass quantitativeGoalEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass qualitativeGoalEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass agreementAtributeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass tradingPartnerEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass partnerRoleEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass publicBusinessInterfaceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass b2BRelationshipEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass businessDocumentEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass businessDocumentTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum speechActEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see ar.edu.utn.frsf.cidisi.upcolbpip.b2bcollaborations.B2bcollaborationsPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private B2bcollaborationsPackageImpl() {
		super(eNS_URI, B2bcollaborationsFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link B2bcollaborationsPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static B2bcollaborationsPackage init() {
		if (isInited) return (B2bcollaborationsPackage)EPackage.Registry.INSTANCE.getEPackage(B2bcollaborationsPackage.eNS_URI);

		// Obtain or create and register package
		B2bcollaborationsPackageImpl theB2bcollaborationsPackage = (B2bcollaborationsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof B2bcollaborationsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new B2bcollaborationsPackageImpl());

		isInited = true;

		// Obtain or create and register interdependencies
		UpcolbpipPackageImpl theUpcolbpipPackage = (UpcolbpipPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(UpcolbpipPackage.eNS_URI) instanceof UpcolbpipPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(UpcolbpipPackage.eNS_URI) : UpcolbpipPackage.eINSTANCE);
		InteractionprotocolsPackageImpl theInteractionprotocolsPackage = (InteractionprotocolsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(InteractionprotocolsPackage.eNS_URI) instanceof InteractionprotocolsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(InteractionprotocolsPackage.eNS_URI) : InteractionprotocolsPackage.eINSTANCE);
		CollaborativebusinessprocessesPackageImpl theCollaborativebusinessprocessesPackage = (CollaborativebusinessprocessesPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CollaborativebusinessprocessesPackage.eNS_URI) instanceof CollaborativebusinessprocessesPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CollaborativebusinessprocessesPackage.eNS_URI) : CollaborativebusinessprocessesPackage.eINSTANCE);
		BusinessinterfacesPackageImpl theBusinessinterfacesPackage = (BusinessinterfacesPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(BusinessinterfacesPackage.eNS_URI) instanceof BusinessinterfacesPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(BusinessinterfacesPackage.eNS_URI) : BusinessinterfacesPackage.eINSTANCE);

		// Create package meta-data objects
		theB2bcollaborationsPackage.createPackageContents();
		theUpcolbpipPackage.createPackageContents();
		theInteractionprotocolsPackage.createPackageContents();
		theCollaborativebusinessprocessesPackage.createPackageContents();
		theBusinessinterfacesPackage.createPackageContents();

		// Initialize created meta-data
		theB2bcollaborationsPackage.initializePackageContents();
		theUpcolbpipPackage.initializePackageContents();
		theInteractionprotocolsPackage.initializePackageContents();
		theCollaborativebusinessprocessesPackage.initializePackageContents();
		theBusinessinterfacesPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theB2bcollaborationsPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(B2bcollaborationsPackage.eNS_URI, theB2bcollaborationsPackage);
		return theB2bcollaborationsPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getB2BCollaboration() {
		return b2BCollaborationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getB2BCollaboration_Name() {
		return (EAttribute)b2BCollaborationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_DefinedBy() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_Partners() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_ParticipatingRoles() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_Relationship() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_Processes() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_DocumentTypes() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_Documents() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BCollaboration_BusinessInterfaces() {
		return (EReference)b2BCollaborationEClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getCollaborativeAgreement() {
		return collaborativeAgreementEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getCollaborativeAgreement_Name() {
		return (EAttribute)collaborativeAgreementEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getCollaborativeAgreement_CollaborativeModel() {
		return (EAttribute)collaborativeAgreementEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCollaborativeAgreement_Atributes() {
		return (EReference)collaborativeAgreementEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCollaborativeAgreement_FormedBy() {
		return (EReference)collaborativeAgreementEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getBusinessGoal() {
		return businessGoalEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessGoal_Name() {
		return (EAttribute)businessGoalEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessGoal_GoalDescription() {
		return (EAttribute)businessGoalEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getBusinessGoal_SubGoals() {
		return (EReference)businessGoalEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getBusinessGoal_SuperGoal() {
		return (EReference)businessGoalEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQuantitativeGoal() {
		return quantitativeGoalEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQuantitativeGoal_CurrentValue() {
		return (EAttribute)quantitativeGoalEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQuantitativeGoal_TargetValue() {
		return (EAttribute)quantitativeGoalEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQuantitativeGoal_UnitOfMeasurement() {
		return (EAttribute)quantitativeGoalEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQuantitativeGoal_ComputationMethod() {
		return (EAttribute)quantitativeGoalEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getQuantitativeGoal_UpdateFrecuency() {
		return (EAttribute)quantitativeGoalEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getQualitativeGoal() {
		return qualitativeGoalEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getAgreementAtribute() {
		return agreementAtributeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getAgreementAtribute_Name() {
		return (EAttribute)agreementAtributeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getAgreementAtribute_Value() {
		return (EAttribute)agreementAtributeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTradingPartner() {
		return tradingPartnerEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTradingPartner_Name() {
		return (EAttribute)tradingPartnerEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTradingPartner_Performs() {
		return (EReference)tradingPartnerEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPartnerRole() {
		return partnerRoleEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getPartnerRole_Name() {
		return (EAttribute)partnerRoleEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPartnerRole_PublicInterfaces() {
		return (EReference)partnerRoleEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPartnerRole_Participates() {
		return (EReference)partnerRoleEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPublicBusinessInterface() {
		return publicBusinessInterfaceEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getPublicBusinessInterface_Name() {
		return (EAttribute)publicBusinessInterfaceEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPublicBusinessInterface_RequiredInterface() {
		return (EReference)publicBusinessInterfaceEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPublicBusinessInterface_ProvidedInterface() {
		return (EReference)publicBusinessInterfaceEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getB2BRelationship() {
		return b2BRelationshipEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getB2BRelationship_Interface() {
		return (EReference)b2BRelationshipEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getBusinessDocument() {
		return businessDocumentEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessDocument_Name() {
		return (EAttribute)businessDocumentEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessDocument_State() {
		return (EAttribute)businessDocumentEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getBusinessDocument_Type() {
		return (EReference)businessDocumentEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getBusinessDocumentType() {
		return businessDocumentTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessDocumentType_Name() {
		return (EAttribute)businessDocumentTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getBusinessDocumentType_Specification() {
		return (EAttribute)businessDocumentTypeEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getSpeechAct() {
		return speechActEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public B2bcollaborationsFactory getB2bcollaborationsFactory() {
		return (B2bcollaborationsFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		b2BCollaborationEClass = createEClass(B2B_COLLABORATION);
		createEAttribute(b2BCollaborationEClass, B2B_COLLABORATION__NAME);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__DEFINED_BY);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__PARTNERS);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__PARTICIPATING_ROLES);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__RELATIONSHIP);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__PROCESSES);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__DOCUMENT_TYPES);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__DOCUMENTS);
		createEReference(b2BCollaborationEClass, B2B_COLLABORATION__BUSINESS_INTERFACES);

		collaborativeAgreementEClass = createEClass(COLLABORATIVE_AGREEMENT);
		createEAttribute(collaborativeAgreementEClass, COLLABORATIVE_AGREEMENT__NAME);
		createEAttribute(collaborativeAgreementEClass, COLLABORATIVE_AGREEMENT__COLLABORATIVE_MODEL);
		createEReference(collaborativeAgreementEClass, COLLABORATIVE_AGREEMENT__ATRIBUTES);
		createEReference(collaborativeAgreementEClass, COLLABORATIVE_AGREEMENT__FORMED_BY);

		businessGoalEClass = createEClass(BUSINESS_GOAL);
		createEAttribute(businessGoalEClass, BUSINESS_GOAL__NAME);
		createEAttribute(businessGoalEClass, BUSINESS_GOAL__GOAL_DESCRIPTION);
		createEReference(businessGoalEClass, BUSINESS_GOAL__SUB_GOALS);
		createEReference(businessGoalEClass, BUSINESS_GOAL__SUPER_GOAL);

		quantitativeGoalEClass = createEClass(QUANTITATIVE_GOAL);
		createEAttribute(quantitativeGoalEClass, QUANTITATIVE_GOAL__CURRENT_VALUE);
		createEAttribute(quantitativeGoalEClass, QUANTITATIVE_GOAL__TARGET_VALUE);
		createEAttribute(quantitativeGoalEClass, QUANTITATIVE_GOAL__UNIT_OF_MEASUREMENT);
		createEAttribute(quantitativeGoalEClass, QUANTITATIVE_GOAL__COMPUTATION_METHOD);
		createEAttribute(quantitativeGoalEClass, QUANTITATIVE_GOAL__UPDATE_FRECUENCY);

		qualitativeGoalEClass = createEClass(QUALITATIVE_GOAL);

		agreementAtributeEClass = createEClass(AGREEMENT_ATRIBUTE);
		createEAttribute(agreementAtributeEClass, AGREEMENT_ATRIBUTE__NAME);
		createEAttribute(agreementAtributeEClass, AGREEMENT_ATRIBUTE__VALUE);

		tradingPartnerEClass = createEClass(TRADING_PARTNER);
		createEAttribute(tradingPartnerEClass, TRADING_PARTNER__NAME);
		createEReference(tradingPartnerEClass, TRADING_PARTNER__PERFORMS);

		partnerRoleEClass = createEClass(PARTNER_ROLE);
		createEAttribute(partnerRoleEClass, PARTNER_ROLE__NAME);
		createEReference(partnerRoleEClass, PARTNER_ROLE__PUBLIC_INTERFACES);
		createEReference(partnerRoleEClass, PARTNER_ROLE__PARTICIPATES);

		publicBusinessInterfaceEClass = createEClass(PUBLIC_BUSINESS_INTERFACE);
		createEAttribute(publicBusinessInterfaceEClass, PUBLIC_BUSINESS_INTERFACE__NAME);
		createEReference(publicBusinessInterfaceEClass, PUBLIC_BUSINESS_INTERFACE__REQUIRED_INTERFACE);
		createEReference(publicBusinessInterfaceEClass, PUBLIC_BUSINESS_INTERFACE__PROVIDED_INTERFACE);

		b2BRelationshipEClass = createEClass(B2B_RELATIONSHIP);
		createEReference(b2BRelationshipEClass, B2B_RELATIONSHIP__INTERFACE);

		businessDocumentEClass = createEClass(BUSINESS_DOCUMENT);
		createEAttribute(businessDocumentEClass, BUSINESS_DOCUMENT__NAME);
		createEAttribute(businessDocumentEClass, BUSINESS_DOCUMENT__STATE);
		createEReference(businessDocumentEClass, BUSINESS_DOCUMENT__TYPE);

		businessDocumentTypeEClass = createEClass(BUSINESS_DOCUMENT_TYPE);
		createEAttribute(businessDocumentTypeEClass, BUSINESS_DOCUMENT_TYPE__NAME);
		createEAttribute(businessDocumentTypeEClass, BUSINESS_DOCUMENT_TYPE__SPECIFICATION);

		// Create enums
		speechActEEnum = createEEnum(SPEECH_ACT);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		CollaborativebusinessprocessesPackage theCollaborativebusinessprocessesPackage = (CollaborativebusinessprocessesPackage)EPackage.Registry.INSTANCE.getEPackage(CollaborativebusinessprocessesPackage.eNS_URI);
		BusinessinterfacesPackage theBusinessinterfacesPackage = (BusinessinterfacesPackage)EPackage.Registry.INSTANCE.getEPackage(BusinessinterfacesPackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		quantitativeGoalEClass.getESuperTypes().add(this.getBusinessGoal());
		qualitativeGoalEClass.getESuperTypes().add(this.getBusinessGoal());

		// Initialize classes and features; add operations and parameters
		initEClass(b2BCollaborationEClass, B2BCollaboration.class, "B2BCollaboration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getB2BCollaboration_Name(), ecorePackage.getEString(), "name", null, 0, 1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_DefinedBy(), this.getCollaborativeAgreement(), null, "definedBy", null, 1, 1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_Partners(), this.getTradingPartner(), null, "partners", null, 0, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_ParticipatingRoles(), this.getPartnerRole(), null, "participatingRoles", null, 2, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_Relationship(), this.getB2BRelationship(), null, "relationship", null, 1, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_Processes(), theCollaborativebusinessprocessesPackage.getCollaborativeBusinessProcess(), null, "processes", null, 0, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_DocumentTypes(), this.getBusinessDocumentType(), null, "documentTypes", null, 0, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_Documents(), this.getBusinessDocument(), null, "documents", null, 0, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getB2BCollaboration_BusinessInterfaces(), theBusinessinterfacesPackage.getBusinessInterface(), null, "businessInterfaces", null, 0, -1, B2BCollaboration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(collaborativeAgreementEClass, CollaborativeAgreement.class, "CollaborativeAgreement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getCollaborativeAgreement_Name(), ecorePackage.getEString(), "name", null, 0, 1, CollaborativeAgreement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getCollaborativeAgreement_CollaborativeModel(), ecorePackage.getEString(), "collaborativeModel", null, 0, 1, CollaborativeAgreement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCollaborativeAgreement_Atributes(), this.getAgreementAtribute(), null, "atributes", null, 0, -1, CollaborativeAgreement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getCollaborativeAgreement_FormedBy(), this.getBusinessGoal(), null, "formedBy", null, 1, -1, CollaborativeAgreement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(businessGoalEClass, BusinessGoal.class, "BusinessGoal", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getBusinessGoal_Name(), ecorePackage.getEString(), "name", null, 0, 1, BusinessGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getBusinessGoal_GoalDescription(), ecorePackage.getEString(), "goalDescription", null, 0, 1, BusinessGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBusinessGoal_SubGoals(), this.getBusinessGoal(), null, "subGoals", null, 0, -1, BusinessGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBusinessGoal_SuperGoal(), this.getBusinessGoal(), null, "superGoal", null, 1, 1, BusinessGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(quantitativeGoalEClass, QuantitativeGoal.class, "QuantitativeGoal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getQuantitativeGoal_CurrentValue(), ecorePackage.getEString(), "currentValue", null, 0, 1, QuantitativeGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getQuantitativeGoal_TargetValue(), ecorePackage.getEString(), "targetValue", null, 0, 1, QuantitativeGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getQuantitativeGoal_UnitOfMeasurement(), ecorePackage.getEString(), "unitOfMeasurement", null, 0, 1, QuantitativeGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getQuantitativeGoal_ComputationMethod(), ecorePackage.getEString(), "computationMethod", null, 0, 1, QuantitativeGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getQuantitativeGoal_UpdateFrecuency(), ecorePackage.getEString(), "updateFrecuency", null, 0, 1, QuantitativeGoal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(qualitativeGoalEClass, QualitativeGoal.class, "QualitativeGoal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

		initEClass(agreementAtributeEClass, AgreementAtribute.class, "AgreementAtribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getAgreementAtribute_Name(), ecorePackage.getEString(), "name", null, 0, 1, AgreementAtribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getAgreementAtribute_Value(), ecorePackage.getEString(), "value", null, 0, 1, AgreementAtribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(tradingPartnerEClass, TradingPartner.class, "TradingPartner", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getTradingPartner_Name(), ecorePackage.getEString(), "name", null, 0, 1, TradingPartner.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTradingPartner_Performs(), this.getPartnerRole(), null, "performs", null, 0, -1, TradingPartner.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(partnerRoleEClass, PartnerRole.class, "PartnerRole", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getPartnerRole_Name(), ecorePackage.getEString(), "name", null, 0, 1, PartnerRole.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPartnerRole_PublicInterfaces(), this.getPublicBusinessInterface(), null, "publicInterfaces", null, 1, -1, PartnerRole.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPartnerRole_Participates(), theCollaborativebusinessprocessesPackage.getCollaborativeBusinessProcess(), null, "participates", null, 0, -1, PartnerRole.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(publicBusinessInterfaceEClass, PublicBusinessInterface.class, "PublicBusinessInterface", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getPublicBusinessInterface_Name(), ecorePackage.getEString(), "name", null, 0, 1, PublicBusinessInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPublicBusinessInterface_RequiredInterface(), theBusinessinterfacesPackage.getBusinessInterface(), null, "requiredInterface", null, 1, 1, PublicBusinessInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPublicBusinessInterface_ProvidedInterface(), theBusinessinterfacesPackage.getBusinessInterface(), null, "providedInterface", null, 1, 1, PublicBusinessInterface.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(b2BRelationshipEClass, B2BRelationship.class, "B2BRelationship", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getB2BRelationship_Interface(), this.getPublicBusinessInterface(), null, "interface", null, 2, 2, B2BRelationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(businessDocumentEClass, BusinessDocument.class, "BusinessDocument", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getBusinessDocument_Name(), ecorePackage.getEString(), "name", null, 0, 1, BusinessDocument.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getBusinessDocument_State(), ecorePackage.getEString(), "state", null, 0, 1, BusinessDocument.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getBusinessDocument_Type(), this.getBusinessDocumentType(), null, "type", null, 1, 1, BusinessDocument.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(businessDocumentTypeEClass, BusinessDocumentType.class, "BusinessDocumentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getBusinessDocumentType_Name(), ecorePackage.getEString(), "name", null, 0, 1, BusinessDocumentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getBusinessDocumentType_Specification(), ecorePackage.getEString(), "specification", null, 0, 1, BusinessDocumentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(speechActEEnum, SpeechAct.class, "SpeechAct");
		addEEnumLiteral(speechActEEnum, SpeechAct.ACCEPT_PROPOSAL);
		addEEnumLiteral(speechActEEnum, SpeechAct.AGREE);
		addEEnumLiteral(speechActEEnum, SpeechAct.CANCEL);
		addEEnumLiteral(speechActEEnum, SpeechAct.CALL_FOR_PROPOSAL);
		addEEnumLiteral(speechActEEnum, SpeechAct.CONFIRM);
		addEEnumLiteral(speechActEEnum, SpeechAct.DISCONFIRM);
		addEEnumLiteral(speechActEEnum, SpeechAct.FAILURE);
		addEEnumLiteral(speechActEEnum, SpeechAct.INFORM);
		addEEnumLiteral(speechActEEnum, SpeechAct.NOT_UNDERSTOOD);
		addEEnumLiteral(speechActEEnum, SpeechAct.PROPOSE);
		addEEnumLiteral(speechActEEnum, SpeechAct.QUERY_IF);
		addEEnumLiteral(speechActEEnum, SpeechAct.QUERY_REF);
		addEEnumLiteral(speechActEEnum, SpeechAct.REFUSE);
		addEEnumLiteral(speechActEEnum, SpeechAct.REJECT_PROPOSAL);
		addEEnumLiteral(speechActEEnum, SpeechAct.REQUEST);
		addEEnumLiteral(speechActEEnum, SpeechAct.REQUEST_WHEN);
		addEEnumLiteral(speechActEEnum, SpeechAct.REQUEST_WHENEVER);
	}

} //B2bcollaborationsPackageImpl
